package pro.shushi.pamirs.hr.core.excel.exports;

import org.springframework.stereotype.Component;
import pro.shushi.pamirs.file.api.context.ExcelDefinitionContext;
import pro.shushi.pamirs.file.api.enmu.ExcelTemplateTypeEnum;
import pro.shushi.pamirs.file.api.extpoint.ExcelExportFetchDataExtPoint;
import pro.shushi.pamirs.file.api.extpoint.impl.ExcelExportSameQueryPageTemplate;
import pro.shushi.pamirs.file.api.model.ExcelCellDefinition;
import pro.shushi.pamirs.file.api.model.ExcelExportTask;
import pro.shushi.pamirs.file.api.model.ExcelWorkbookDefinition;
import pro.shushi.pamirs.file.api.util.ExcelHelper;
import pro.shushi.pamirs.file.api.util.ExcelTemplateInit;
import pro.shushi.pamirs.hr.api.model.eam.BsMtoolMd;
import pro.shushi.pamirs.meta.annotation.ExtPoint;
import pro.shushi.pamirs.meta.annotation.fun.extern.Slf4j;

import java.util.Collections;
import java.util.List;

/**
 * 工装型号信息导出
 *
 * 数据导入导出参考：
 */
@Slf4j
@Component
public class BsMtoolMdExportTemplate extends ExcelExportSameQueryPageTemplate<BsMtoolMd>
        implements ExcelTemplateInit, ExcelExportFetchDataExtPoint {

    public static final String TEMPLATE_NAME = "工装型号信息导出";

    @Override
    public List<ExcelWorkbookDefinition> generator() {
        // 定义导出模板
        return Collections.singletonList(
                ExcelHelper.fixedHeader(BsMtoolMd.MODEL_MODEL, TEMPLATE_NAME)
                        .createBlock(TEMPLATE_NAME, BsMtoolMd.MODEL_MODEL)
                        .setType(ExcelTemplateTypeEnum.EXPORT)
                        .addColumn("orgCode", "组织编码")
                        .addColumn("mmdCode", new ExcelCellDefinition().setValue("工装型号编码").setAutoSizeColumn(Boolean.TRUE)) // 可以设置格式
                        .addColumn("mmdName", new ExcelCellDefinition().setValue("工装型号名称").setAutoSizeColumn(Boolean.TRUE))
                        .addColumn("mttypeCode", "工装分类编码")
                        .addColumn("mmdType", "特殊分类")
                        // 补充其他字段
                        .addColumn("munit", "单位")
                        .addColumn("defStoreCode", "默认仓库编码")
                        .addColumn("defStorelocCode", "默认储位编码")
                        .addColumn("ukWarnTimes", "保养预警使用次数")
                        .addColumn("fwUkWarnTimes", "提前保养预警使用次数")
                        .addColumn("ukWarnDays", "保养预警使用天数")
                        .addColumn("fwUkWarnDays", "提前保养预警使用天数")
                        .addColumn("isMtoolRcvtn", "工装启用领用与归还")
                        .addColumn("isMtoolChk", "工装启用日点检")
                        .addColumn("needAdjust", "需校准")
                        .addColumn("iadjExpDay", "内部校准间隔天数")
                        .addColumn("price", "单价（RMB）")
                        .addColumn("isValid", "启用")
                        .addColumn("remark", "备注")
                        .build());
    }

    @Override
    @ExtPoint.Implement(expression = "context.model == \"" + BsMtoolMd.MODEL_MODEL + "\" && context.name == \"" + TEMPLATE_NAME + "\"")
    public List<Object> fetchExportData(ExcelExportTask exportTask, ExcelDefinitionContext context) {
        List<Object> result =  super.fetchExportData(exportTask,context);
        // 对bsMtools做一些操作
        List<BsMtoolMd> bsMtoolMds = (List<BsMtoolMd>)result.get(0);
         for(BsMtoolMd bsMtool:bsMtoolMds){
            // 补充自定义逻辑
        }
        return result;
    }

}
